home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
gnu
/
nethack.lha
/
nethack-3.1
/
include
/
you.h
< prev
next >
Wrap
C/C++ Source or Header
|
1993-01-17
|
7KB
|
213 lines
/* SCCS Id: @(#)you.h 3.1 92/11/29 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
#ifndef YOU_H
#define YOU_H
#ifndef ALIGN_H
#include "align.h"
#endif
#ifndef ATTRIB_H
#include "attrib.h"
#endif
#ifndef MONST_H
#include "monst.h"
#endif
#ifndef YOUPROP_H
#include "youprop.h"
#endif
struct prop {
#define TIMEOUT 007777 /* mask */
#define LEFT_RING W_RINGL /* 010000L */
#define RIGHT_RING W_RINGR /* 020000L */
#define LEFT_SIDE LEFT_RING
#define RIGHT_SIDE RIGHT_RING
#define BOTH_SIDES (LEFT_SIDE | RIGHT_SIDE)
#define WORN_ARMOR W_ARM /* 040000L */
#define WORN_CLOAK W_ARMC /* 0100000L */
#define WORN_HELMET W_ARMH /* 0200000L */
#define WORN_SHIELD W_ARMS /* 0400000L */
#define WORN_GLOVES W_ARMG /* 01000000L */
#define WORN_BOOTS W_ARMF /* 02000000L */
#define WORN_AMUL W_AMUL /* 04000000L */
#define WORN_BLINDF W_TOOL /* 010000000L */
#ifdef TOURIST
#define WORN_SHIRT W_ARMU /* 01000L */
#endif
/*
* FROMEXPER is for a property gained by virtue of your experience level,
* which will be lost if you lose that level; FROMOUTSIDE is one that is
* gained in some other way (e.g., a throne, a prayer, or a corpse).
* INTRINSIC is either FROMEXPER or FROMOUTSIDE
*/
#define FROMOUTSIDE 0200000000L
#define FROMEXPER 0400000000L
#define INTRINSIC (FROMOUTSIDE|FROMEXPER)
long p_flgs;
int NDECL((*p_tofn)); /* called after timeout */
};
struct u_have {
Bitfield(amulet,1); /* carrying Amulet */
Bitfield(bell,1); /* carrying Bell */
Bitfield(book,1); /* carrying Book */
Bitfield(menorah,1); /* carrying Candelabrum */
#ifdef MULDGN
Bitfield(questart,1); /* carrying the Quest Artifact */
Bitfield(unused,3);
#else
Bitfield(unused,4);
#endif
};
struct u_event {
Bitfield(minor_oracle,1); /* received at least 1 cheap oracle */
Bitfield(major_oracle,1); /* " expensive oracle */
#ifdef MULDGN
Bitfield(qexpelled,1); /* expelled from the Quest dungeon */
Bitfield(qcompleted,1); /* successfully completed the Quest task */
#endif
Bitfield(uheard_tune,2); /* if you heard the passtune */
Bitfield(uopened_dbridge,1); /* if you open the drawbridge */
Bitfield(invoked,1); /* invoked the gate to the Sanctum level */
Bitfield(gehennom_entered,1); /* entered Gehennom via Valley */
#ifdef ELBERETH
Bitfield(uhand_of_elbereth,1); /* if you become Hand of Elbereth */
#endif
Bitfield(udemigod,1); /* once you kill the wiz */
};
struct you {
xchar ux, uy;
schar dx, dy, dz; /* direction of move (or zap or ... ) */
schar di; /* direction of FF */
xchar ux0, uy0; /* initial position FF */
d_level uz, uz0; /* your level on this and the previous turn */
d_level utolev; /* level monster teleported you to, or uz */
char utotype; /* bitmask of goto_level() flags for utolev */
char usym; /* usually '@' */
boolean umoved; /* changed map location (post-move) */
int last_str_turn; /* 0: none, 1: half turn, 2: full turn */
/* +: turn right, -: turn left */
unsigned ulevel; /* 1 - MAXULEV */
unsigned utrap; /* trap timeout */
unsigned utraptype; /* defined if utrap nonzero */
#define TT_BEARTRAP 0
#define TT_PIT 1
#define TT_WEB 2
#define TT_LAVA 3
#define TT_INFLOOR 4
char urooms[5]; /* rooms (roomno + 3) occupied now */
char urooms0[5]; /* ditto, for previous position */
char uentered[5]; /* rooms (roomno + 3) entered this turn */
char ushops[5]; /* shop rooms (roomno + 3) occupied now */
char ushops0[5]; /* ditto, for previous position */
char ushops_entered[5]; /* ditto, shops entered this turn */
char ushops_left[5]; /* ditto, shops exited this turn */
int uhunger; /* refd only in eat.c and shk.c */
unsigned uhs; /* hunger state - see eat.c */
struct prop uprops[LAST_PROP+1];
unsigned umconf;
const char *usick_cause;
/* For messages referring to hands, eyes, feet, etc... when polymorphed */
#define ARM 0
#define EYE 1
#define FACE 2
#define FINGER 3
#define FINGERTIP 4
#define FOOT 5
#define HAND 6
#define HANDED 7
#define HEAD 8
#define LEG 9
#define LIGHT_HEADED 10
#define NECK 11
#define SPINE 12
#define TOE 13
/* These ranges can never be more than MAX_RANGE (vision.h). */
int nv_range; /* current night vision range */
int xray_range; /* current xray vision range */
/*
* These variables are valid globally only when punished and blind.
*/
#define BC_BALL 0x01 /* bit mask for ball in 'bc_felt' below */
#define BC_CHAIN 0x02 /* bit mask for chain in 'bc_felt' below */
int bglyph; /* glyph under the ball */
int cglyph; /* glyph under the chain */
int bc_order; /* ball & chain order [see bc_order() in trap.c] */
int bc_felt; /* mask for ball/chain being felt */
/*
* Player type monster (e.g. PM_VALKYRIE). This is set in u_init
* and never changed afterward.
*/
int umonster;
#ifdef POLYSELF
int umonnum; /* monster number or -1 */
int mh, mhmax, mtimedone; /* for polymorph-self */
struct attribs macurr, /* for monster attribs */
mamax; /* for monster attribs */
int ulycn; /* lycanthrope type */
#endif
unsigned ucreamed;
unsigned uswldtim; /* time you have been swallowed */
Bitfield (uswallow,1); /* true if swallowed */
Bitfield(uinwater,1); /* if you're currently in water (only
underwater possible currently) */
#ifdef POLYSELF
Bitfield(uundetected,1); /* if you're a hiding monster/piercer */
Bitfield(mfemale,1); /* saved human value of flags.female */
#endif
Bitfield(uinvulnerable,1); /* you're invulnerable (praying) */
Bitfield(usleep,1); /* you're sleeping */
unsigned udg_cnt; /* how long you have been demigod */
struct u_event uevent; /* certain events have happened */
struct u_have uhave; /* you're carrying special objects */
struct attribs acurr, /* your current attributes (eg. str)*/
aexe, /* for gain/loss via "exercise" */
abon, /* your bonus attributes (eg. str) */
amax, /* your max attributes (eg. str) */
atemp, /* used for temporary loss/gain */
atime; /* used for loss/gain countdown */
align ualign; /* character alignment */
#define CONVERT 2
aligntyp ualignbase[CONVERT]; /* for ualign conversion record */
schar uluck, moreluck; /* luck and luck bonus */
#define LUCKADD 3 /* added value when carrying luck stone */
#define Luck (u.uluck + u.moreluck)
#define LUCKMAX 10 /* on moonlit nights 11 */
#define LUCKMIN (-10)
schar udaminc;
schar uac;
int uhp,uhpmax;
int uen, uenmax; /* magical energy - M. Stephenson */
int ugangr; /* if the gods are angry at you */
int ublessed, ublesscnt; /* blessing/duration from #pray */
long ugold, ugold0;
long uexp, urexp;
long ucleansed; /* to record moves when player was cleansed */
int uinvault;
struct monst *ustuck;
int ugrave_arise; /* you die and become something aside from a ghost */
int nr_killed[NUMMONS]; /* used for experience bookkeeping */
};
#endif /* YOU_H */